Participant info

Agency task: Agency decisions

Model: Agency decisions by VoC

## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: stage_1_choice ~ age_z * voc_z * condition_trial + (voc_z * condition_trial || 
## Model:     subject_id)
## Data: agency_model_data
## Df full model: 12
##                        Effect df      Chisq p.value
## 1                       age_z  1       0.00    .965
## 2                       voc_z  1 166.62 ***   <.001
## 3             condition_trial  1       0.07    .796
## 4                 age_z:voc_z  1  12.28 ***   <.001
## 5       age_z:condition_trial  1       0.01    .941
## 6       voc_z:condition_trial  1  51.94 ***   <.001
## 7 age_z:voc_z:condition_trial  1     5.26 *    .022
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: binomial  ( logit )
## Formula: stage_1_choice ~ age_z * voc_z * condition_trial + (1 + re1.voc_z +  
##     re1.condition_trial + re1.voc_z_by_condition_trial || subject_id)
##    Data: data
## Control: glmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 1e+06))
## 
##      AIC      BIC   logLik deviance df.resid 
##  38797.4  38902.4 -19386.7  38773.4    46747 
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -37.884  -0.383   0.172   0.500  37.176 
## 
## Random effects:
##  Groups       Name                         Variance Std.Dev.
##  subject_id   (Intercept)                  4.51649  2.1252  
##  subject_id.1 re1.voc_z                    0.49714  0.7051  
##  subject_id.2 re1.condition_trial          0.82459  0.9081  
##  subject_id.3 re1.voc_z_by_condition_trial 0.04873  0.2207  
## Number of obs: 46759, groups:  subject_id, 150
## 
## Fixed effects:
##                              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                  1.262274   0.175189   7.205 5.80e-13 ***
## age_z                        0.007817   0.175021   0.045 0.964374    
## voc_z                        1.094665   0.061063  17.927  < 2e-16 ***
## condition_trial             -0.020084   0.076998  -0.261 0.794221    
## age_z:voc_z                  0.218514   0.061010   3.582 0.000341 ***
## age_z:condition_trial       -0.005671   0.076827  -0.074 0.941160    
## voc_z:condition_trial        0.200551   0.025090   7.993 1.31e-15 ***
## age_z:voc_z:condition_trial  0.058322   0.025114   2.322 0.020219 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) age_z  voc_z  cndtn_ ag_z:v_ ag_z:c_ vc_z:_
## age_z       -0.001                                            
## voc_z        0.012  0.001                                     
## conditn_trl  0.011 -0.002  0.007                              
## age_z:voc_z  0.002  0.010 -0.006  0.001                       
## ag_z:cndtn_ -0.002  0.007  0.001 -0.009  0.004                
## vc_z:cndtn_  0.006  0.001  0.043  0.034 -0.001   0.005        
## ag_z:vc_z:_  0.001  0.003  0.000  0.005  0.036   0.033   0.000

Plot: Sensitivity to the value of choice

Plot: Sensitivity to value of choice with continuous age

Summary stats: Sensitivity to value of control

Agency task: Machine selection

Model: Optimal machine choices across trials by condition and age

## Mixed Model Anova Table (Type 3 tests, LRT-method)
## 
## Model: stage_2_acc ~ age_z * context * condition_trial + (context * 
## Model:     condition_trial || subject_id)
## Data: machine_model_data
## Df full model: 12
##                          Effect df     Chisq p.value
## 1                         age_z  1 15.49 ***   <.001
## 2                       context  1 29.27 ***   <.001
## 3               condition_trial  1 69.50 ***   <.001
## 4                 age_z:context  1      0.74    .389
## 5         age_z:condition_trial  1      0.70    .404
## 6       context:condition_trial  1    5.47 *    .019
## 7 age_z:context:condition_trial  1      1.71    .191
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: binomial  ( logit )
## Formula: stage_2_acc ~ age_z * context * condition_trial + (1 + re1.context1 +  
##     re1.condition_trial + re1.context1_by_condition_trial ||      subject_id)
##    Data: data
## Control: glmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 1e+06))
## 
##      AIC      BIC   logLik deviance df.resid 
##  15084.2  15179.9  -7530.1  15060.2    21318 
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -10.7613   0.0972   0.2017   0.4001   2.4112 
## 
## Random effects:
##  Groups       Name                            Variance Std.Dev.
##  subject_id   (Intercept)                     1.7634   1.3279  
##  subject_id.1 re1.context1                    0.6000   0.7746  
##  subject_id.2 re1.condition_trial             0.2931   0.5414  
##  subject_id.3 re1.context1_by_condition_trial 0.1118   0.3344  
## Number of obs: 21330, groups:  subject_id, 149
## 
## Fixed effects:
##                                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                     2.31548    0.11532  20.079  < 2e-16 ***
## age_z                           0.45937    0.11421   4.022 5.77e-05 ***
## context1                        0.40971    0.07119   5.755 8.65e-09 ***
## condition_trial                 0.49629    0.05390   9.208  < 2e-16 ***
## age_z:context1                 -0.06268    0.07112  -0.881   0.3782    
## age_z:condition_trial           0.04491    0.05342   0.841   0.4006    
## context1:condition_trial        0.09387    0.03923   2.393   0.0167 *  
## age_z:context1:condition_trial -0.05214    0.03913  -1.333   0.1827    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) age_z  cntxt1 cndtn_ ag_z:1 ag_z:_ cnt1:_
## age_z        0.038                                          
## context1     0.033  0.004                                   
## conditn_trl  0.077  0.011  0.031                            
## ag_z:cntxt1  0.000  0.023  0.054 -0.003                     
## ag_z:cndtn_  0.007  0.061 -0.002  0.071  0.021              
## cntxt1:cnd_  0.028  0.000  0.108  0.077  0.014  0.003       
## ag_z:cnt1:_ -0.003  0.017  0.014  0.004  0.106  0.066  0.106

Plot: Proportion optimal machine selections across age groups and trials

Explicit reward knowledge task

Explicit reward knowledge task: summary stats

Model: Explicit reward knowledge by age and true probabilities

## Mixed Model Anova Table (Type 3 tests, S-method)
## 
## Model: error ~ zTrueProb * zAge + (1 | subject_id)
## Data: explicitKnow.filtered
##           Effect        df         F p.value
## 1      zTrueProb 1, 748.00 23.42 ***   <.001
## 2           zAge 1, 148.00   7.59 **    .007
## 3 zTrueProb:zAge 1, 748.00      0.52    .473
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: error ~ zTrueProb * zAge + (1 | subject_id)
##    Data: data
## 
## REML criterion at convergence: 3093.5
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -1.5243 -0.7034 -0.1905  0.4417  4.1618 
## 
## Random effects:
##  Groups     Name        Variance Std.Dev.
##  subject_id (Intercept) 0.1159   0.3405  
##  Residual               1.6947   1.3018  
## Number of obs: 900, groups:  subject_id, 150
## 
## Fixed effects:
##                 Estimate Std. Error        df t value Pr(>|t|)    
## (Intercept)      1.58778    0.05154 148.00000  30.810  < 2e-16 ***
## zTrueProb       -0.21012    0.04342 747.99999  -4.840 1.58e-06 ***
## zAge            -0.14204    0.05156 148.00000  -2.755  0.00661 ** 
## zTrueProb:zAge  -0.03119    0.04344 747.99999  -0.718  0.47293    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) zTrPrb zAge 
## zTrueProb   0.000              
## zAge        0.000  0.000       
## zTruPrb:zAg 0.000  0.000  0.000

Plot: Explicit reward knowledge

LS0tCnRpdGxlOiAiRTIgVm9DIEFuYWx5c2VzIFBhcnQgMjogUmVncmVzc2lvbiBBbmFseXNlcyIKZGF0ZTogMS84LzI0Cm91dHB1dDoKICAgIGh0bWxfZG9jdW1lbnQ6CiAgICAgICAgZGZfcHJpbnQ6ICdwYWdlZCcKICAgICAgICB0b2M6IHRydWUKICAgICAgICB0b2NfZmxvYXQ6CiAgICAgICAgICAgIGNvbGxhcHNlZDogZmFsc2UKICAgICAgICAgICAgc21vb3RoX3Njcm9sbDogdHJ1ZQogICAgICAgIG51bWJlcl9zZWN0aW9uczogZmFsc2UKICAgICAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCiAgICAgICAgc2VsZl9jb250YWluZWQ6IHRydWUKLS0tCgpgYGB7ciBjaHVuayBzZXR0aW5ncywgaW5jbHVkZSA9IEZBTFNFfQojIHNldCBjaHVuayBzZXR0aW5ncwprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCAKICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgPSBGQUxTRSkKa25pdHI6Om9wdHNfY2h1bmskc2V0KGRwaT02MDApCmtuaXRyOjpvcHRzX2tuaXQkc2V0KHJvb3QuZGlyID0gcnByb2pyb290OjpmaW5kX3JzdHVkaW9fcm9vdF9maWxlKCkpCmBgYAoKYGBge3IgbG9hZCBsaWJyYXJpZXMsIGluY2x1ZGUgPSBGfQoKI2xvYWQgbGlicmFyaWVzCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGdsdWUpCmxpYnJhcnkoYWZleCkKCiNsb2FkIHNjcmlwdHMKc291cmNlKCdhbmFseXNpc19zY3JpcHRzL3ZvY19mdW5jdGlvbnMuUicpCmBgYAoKYGBge3IgaW1wb3J0IGRhdGF9CgojIHJlYWQgaW4gbGVhcm5pbmcgZGF0YQpsZWFybmluZ19kYXRhIDwtIHJlYWRfY3N2KCdkYXRhL3Byb2Nlc3NlZC9sZWFybmluZ19kYXRhLmNzdicpCgojIHJlYWQgaW4gcGFydGljaXBhbnQgYWdlcwpwYXJ0aWNpcGFudF9hZ2VzIDwtIHJlYWRfY3N2KCdkYXRhL3ZvY19zdWJfaW5mby5jc3YnKSAKCiMgam9pbgpsZWFybmluZ19kYXRhIDwtIGlubmVyX2pvaW4obGVhcm5pbmdfZGF0YSwgcGFydGljaXBhbnRfYWdlcywgYnkgPSBjKCdzdWJqZWN0X2lkJykpICU+JQogIG11dGF0ZShhZ2VfZ3JvdXAgPSBjYXNlX3doZW4oYWdlIDwgMTMgfiAnQ2hpbGRyZW4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlIDwgMTggJiBhZ2UgPiAxMi45OSB+ICdBZG9sZXNjZW50cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2UgPiAxOCB+ICdBZHVsdHMnKSkKCmxlYXJuaW5nX2RhdGEkYWdlX2dyb3VwIDwtIGZhY3RvcihsZWFybmluZ19kYXRhJGFnZV9ncm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkNoaWxkcmVuIiwgIkFkb2xlc2NlbnRzIiwgIkFkdWx0cyIpKQoKYGBgCgpgYGB7ciBwcm9jZXNzIGxlYXJuaW5nIGRhdGF9CmxlYXJuaW5nX2RhdGEgPC0gbGVhcm5pbmdfZGF0YSAlPiUKICBtdXRhdGUoZXZfY2hvaWNlID0gY2FzZV93aGVuKGNvbnRleHQgPT0gMCB+IDksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID09IDEgfiA3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9PSAyIH4gNSksCiAgICAgICAgIGV2X2NvbXAgPSA1ICsgb2ZmZXIsCiAgICAgICAgIHZvYyA9IGV2X2Nob2ljZSAtIGV2X2NvbXAsCiAgICAgICAgIGJldHRlcl9tYWNoaW5lID0gY2FzZV93aGVuKHJld2FyZF9wcm9iX0wgPiByZXdhcmRfcHJvYl9SIH4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV3YXJkX3Byb2JfTCA8IHJld2FyZF9wcm9iX1IgfiAwLAogICAgICAgICApLAogICAgICAgICBzdGFnZV8yX2FjYyA9IGNhc2Vfd2hlbihzdGFnZV8yX2Nob2ljZSA9PSBiZXR0ZXJfbWFjaGluZSB+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlXzJfY2hvaWNlICE9IGJldHRlcl9tYWNoaW5lIH4gMCkpICU+JQogIGdyb3VwX2J5KHN1YmplY3RfaWQsIGNvbnRleHQpICU+JQogIG11dGF0ZShjb25kaXRpb25fdHJpYWwgPSByYW5rKHRyaWFsKSwKICAgICAgICAgYmxvY2sgPSBmbG9vcigodHJpYWwtMSkvMjEgKyAxKSkKCiMgZXhjbHVkZSBmaXJzdC1zdGFnZSBtaXNzZXMgYW5kIGZpcnN0LXN0YWdlIFJUIDwgMTUwIG1zCmxlYXJuaW5nX2RhdGFfZmlsdGVyZWQgPC0gbGVhcm5pbmdfZGF0YSAlPiUKICBmaWx0ZXIoc3RhZ2VfMV9ydCA+IDE1MCkKCmBgYAoKIyBQYXJ0aWNpcGFudCBpbmZvCmBgYHtyIHN1YmplY3QgaW5mb3JtYXRpb259CnN1Yl9pbmZvIDwtIGxlYXJuaW5nX2RhdGFfZmlsdGVyZWQgJT4lCiAgdW5ncm91cCgpICU+JQogIHNlbGVjdChzdWJqZWN0X2lkLCBhZ2UsIGFnZV9ncm91cCwgZ2VuZGVyKSAlPiUKICB1bmlxdWUoKSAlPiUKICBncm91cF9ieShhZ2VfZ3JvdXApICU+JQogIHN1bW1hcml6ZShOID0gbigpLCAKICAgICAgICAgICAgbWluX2FnZSA9IG1pbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgIG1heF9hZ2UgPSBtYXgoYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICBtZWFuX2FnZSA9IG1lYW4oYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICBzZF9hZ2UgPSBzZChhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgIG5fZmVtYWxlID0gc3VtKGdlbmRlciA9PSAnRmVtYWxlJyksCiAgICAgICAgICAgIG5fbWFsZSA9IHN1bShnZW5kZXIgPT0gJ01hbGUnKSwKICAgICAgICAgICAgbl9vdGhlciA9IHN1bShnZW5kZXIgPT0gJ090aGVyJykpCnN1Yl9pbmZvCgpgYGAKCgojIEFnZW5jeSB0YXNrOiBBZ2VuY3kgZGVjaXNpb25zIAojIyBNb2RlbDogQWdlbmN5IGRlY2lzaW9ucyBieSBWb0MKYGBge3IgYWdlbmN5IG1vZGVsfQojIHNlbGVjdCByZWxldmFudCB2YXJpYWJsZXMgCmFnZW5jeV9tb2RlbF9kYXRhIDwtIGxlYXJuaW5nX2RhdGFfZmlsdGVyZWQgJT4lCiAgc2VsZWN0KHN1YmplY3RfaWQsIHN0YWdlXzFfY2hvaWNlLCB2b2MsIGNvbmRpdGlvbl90cmlhbCwgYmxvY2ssIHRyaWFsLCBhZ2UsIGFnZV9ncm91cCkKCiMjIFJFR1JFU1NJT04gTU9ERUwgIyMKI3ogc2NvcmUgY29udGludW91cyB2YXJpYWJsZXMKYWdlbmN5X21vZGVsX2RhdGEkc3ViamVjdF9pZCA8LSBmYWN0b3IoYWdlbmN5X21vZGVsX2RhdGEkc3ViamVjdF9pZCkKYWdlbmN5X21vZGVsX2RhdGEkdm9jX3ogPC0gc2NhbGVfdGhpcyhhZ2VuY3lfbW9kZWxfZGF0YSR2b2MpCmFnZW5jeV9tb2RlbF9kYXRhJGNvbmRpdGlvbl90cmlhbCA8LSBzY2FsZV90aGlzKGFnZW5jeV9tb2RlbF9kYXRhJGNvbmRpdGlvbl90cmlhbCkKYWdlbmN5X21vZGVsX2RhdGEkYWdlX3ogPC0gc2NhbGVfdGhpcyhhZ2VuY3lfbW9kZWxfZGF0YSRhZ2UpCgojcnVuIG1vZGVsCmFnZW5jeV9tb2RlbCA8LSBtaXhlZChzdGFnZV8xX2Nob2ljZSB+IGFnZV96ICogdm9jX3ogKiBjb25kaXRpb25fdHJpYWwgKyAodm9jX3ogKiBjb25kaXRpb25fdHJpYWwgfHwgc3ViamVjdF9pZCksCiAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gYWdlbmN5X21vZGVsX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiLAogICAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gIkxSVCIsCiAgICAgICAgICAgICAgICAgICAgICBleHBhbmRfcmUgPSBULAogICAgICAgICAgICAgICAgICAgICAgY29udHJvbD1nbG1lckNvbnRyb2wob3B0aW1pemVyPSJib2J5cWEiLCBvcHRDdHJsPWxpc3QobWF4ZnVuPTFlNikpKQoKI3Nob3cgbW9kZWwgcmVzdWx0cwphZ2VuY3lfbW9kZWwKc3VtbWFyeShhZ2VuY3lfbW9kZWwpCmBgYAoKIyMgUGxvdDogU2Vuc2l0aXZpdHkgdG8gdGhlIHZhbHVlIG9mIGNob2ljZQpgYGB7ciB2b2MgcGxvdCwgZmlnLmhlaWdodCA9IDQsIGZpZy53aWR0aCA9IDcsIHVuaXQgPSAiaW4ifQojIyBQTE9UICMjCmFnZW5jeV9zdWJfbWVhbnMgPC0gYWdlbmN5X21vZGVsX2RhdGEgJT4lIAogIG11dGF0ZSh0YXNrX2hhbGYgPSBjYXNlX3doZW4odHJpYWwgPCAxNTggfiAiRmlyc3QgSGFsZiBvZiBUYXNrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYWwgPiAxNTcgfiAiU2Vjb25kIEhhbGYgb2YgVGFzayIpKSAlPiUKICBncm91cF9ieSh0YXNrX2hhbGYsIHZvYywgc3ViamVjdF9pZCwgYWdlX2dyb3VwKSAlPiUKICBzdW1tYXJpemUobWVhbl9zdWJfYWdlbmN5ID0gbWVhbihzdGFnZV8xX2Nob2ljZSwgbmEucm0gPSBUKSkKCmFnZW5jeV9tZWFucyA8LSBhZ2VuY3lfc3ViX21lYW5zICU+JSAKICBncm91cF9ieSh0YXNrX2hhbGYsIHZvYywgYWdlX2dyb3VwKSAlPiUKICBzdW1tYXJpemUobWVhbl9hZ2VuY3kgPSBtZWFuKG1lYW5fc3ViX2FnZW5jeSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgc2VfYWdlbmN5ID0gc2QobWVhbl9zdWJfYWdlbmN5IC8gc3FydChuKCkpKSkKCmFnZW5jeV9wbG90IDwtIGdncGxvdChhZ2VuY3lfbWVhbnMsIGFlcyh4ID0gdm9jLCB5ID0gbWVhbl9hZ2VuY3ksIGNvbG9yID0gYWdlX2dyb3VwKSkgKwogIGZhY2V0X3dyYXAofnRhc2tfaGFsZikgKwogIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gYWdlX2dyb3VwKSkgKyAKICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gbWVhbl9hZ2VuY3kgLSBzZV9hZ2VuY3ksIHltYXggPSBtZWFuX2FnZW5jeSArIHNlX2FnZW5jeSksIHdpZHRoID0gLjEpICsgCiAgZ2VvbV9saW5lKCkgKwogIHZvY190aGVtZSgpICsgCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcz1jKCIjODQzNDdDIiwgIiNCNDA0MjQiLCAiI0VCNkQxRSIpLCBuYW1lID0gIkFnZSBHcm91cCIpICsKICB4bGFiKCJWYWx1ZSBvZiBDaG9pY2UgKFZvQykiKSArCiAgeWxhYigiUHJvcG9ydGlvbiBBZ2VuY3kgQ2hvaWNlcyIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAuNSwgbGluZXR5cGUgPSAiZGFzaGVkIikgKwogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gImRhc2hlZCIpCmFnZW5jeV9wbG90CmBgYAoKCiMjIFBsb3Q6IFNlbnNpdGl2aXR5IHRvIHZhbHVlIG9mIGNob2ljZSB3aXRoIGNvbnRpbnVvdXMgYWdlIApgYGB7ciB2b2MgcGxvdCBjb250aW51b3VzIGFnZSwgZmlnLmhlaWdodCA9IDMuOSwgZmlnLndpZHRoID0gMywgdW5pdCA9ICJpbiJ9CgojcnVuIG1vZGVsIHdpdGhvdXQgYWdlIHRvIGdldCByYW5kb20gZWZmZWN0cyBmb3IgZWFjaCBwYXJ0aWNpcGFudAphZ2VuY3lfZ2xtZXIgPC0gbWl4ZWQoc3RhZ2VfMV9jaG9pY2UgfiAgdm9jX3ogKiBjb25kaXRpb25fdHJpYWwgKyAodm9jX3ogKiBjb25kaXRpb25fdHJpYWwgfCBzdWJqZWN0X2lkKSwKICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBhZ2VuY3lfbW9kZWxfZGF0YSwgCiAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbCwgCiAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSAiTFJUIiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9Z2xtZXJDb250cm9sKG9wdGltaXplcj0iYm9ieXFhIixvcHRDdHJsPWxpc3QobWF4ZnVuPTFlNikpLAogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuID0gIm1lck1vZCIpIAoKI2dldCBmaXhlZCBlZmZlY3Qgb2YgelZvQwpWb0NfZml4ZWRlZmYgPC0gYXMuZGF0YS5mcmFtZShjb2VmKHN1bW1hcnkoYWdlbmN5X2dsbWVyKSkpJEVzdGltYXRlWzJdClZvQ19pbnRfZml4ZWRlZmYgPC0gYXMuZGF0YS5mcmFtZShjb2VmKHN1bW1hcnkoYWdlbmN5X2dsbWVyKSkpJEVzdGltYXRlWzRdCgojZ2V0IHJhbmRvbSBlZmZlY3RzClZvQ19lZmZlY3RzIDwtIHJhbmVmKGFnZW5jeV9nbG1lcikkc3ViamVjdF9pZCAlPiUKICAgIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAic3ViamVjdF9pZCIpCgojY29tYmluZSB3aXRoIGFnZQpWb0Nfc3ViRWZmZWN0cyA8LSBhZ2VuY3lfbW9kZWxfZGF0YSAlPiUKICAgIHNlbGVjdChzdWJqZWN0X2lkLCBhZ2UpICU+JSAKICAgIHVuaXF1ZSgpICU+JQogICAgbGVmdF9qb2luKFZvQ19lZmZlY3RzLCBieSA9IGMoInN1YmplY3RfaWQiKSkgJT4lCiAgICBtdXRhdGUoelZvQ0Z1bGwgPSB2b2NfeiArIFZvQ19maXhlZGVmZiwgCiAgICAgICAgICAgaW50RnVsbCA9IGB2b2Nfejpjb25kaXRpb25fdHJpYWxgICsgVm9DX2ludF9maXhlZGVmZikKCiNwbG90IGFnZSBieSBWb0MgZWZmZWN0ClZvQ19wbG90X2NvbnRpbnVvdXNBZ2UgPC0gZ2dwbG90KFZvQ19zdWJFZmZlY3RzLCBhZXMoeCA9IGFnZSwgeSA9IHpWb0NGdWxsKSkgKwogICAgZ2VvbV9wb2ludChjb2xvciA9ICIjRUI2RDFFIikgKyAKICAgIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGNvbG9yID0gIiM4NDM0N0MiLCBmaWxsID0gIiM4NDM0N0MiKSArCiAgICB2b2NfdGhlbWUoKSArIAogICAgeGxhYigiQWdlIikgKwogICAgeWxhYigiVm9DIEVmZmVjdCIpIApWb0NfcGxvdF9jb250aW51b3VzQWdlCgojcGxvdCBhZ2UgYnkgVm9DIHggdHJpYWwgZWZmZWN0ClZvQ19wbG90X2NvbnRpbnVvdXNBZ2VUcmlhbCA8LSBnZ3Bsb3QoVm9DX3N1YkVmZmVjdHMsIGFlcyh4ID0gYWdlLCB5ID0gaW50RnVsbCkpICsKICAgIGdlb21fcG9pbnQoY29sb3IgPSAiI0VCNkQxRSIpICsgCiAgICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBjb2xvciA9ICIjODQzNDdDIiwgZmlsbCA9ICIjODQzNDdDIikgKwogICAgdm9jX3RoZW1lKCkgKyAKICAgIHhsYWIoIkFnZSIpICsKICAgIHlsYWIoIlZvQyB4IFRyaWFsIEVmZmVjdCIpIApWb0NfcGxvdF9jb250aW51b3VzQWdlVHJpYWwKYGBgCgoKCiMjIFN1bW1hcnkgc3RhdHM6IFNlbnNpdGl2aXR5IHRvIHZhbHVlIG9mIGNvbnRyb2wKYGBge3Igdm9jIHN1bW1hcnkgc3RhdHN9CgojIFdoYXQgcHJvcG9ydGlvbiBvZiB0cmlhbHMgZGlkIHBhcnRpY2lwYW50cyBjaG9vc2UgYWdlbmN5IHdoZW4gVm9DIHdhcyAwPwpWb0NfemVyb19tZWFuc19zdWIgPC0gbGVhcm5pbmdfZGF0YV9maWx0ZXJlZCAlPiUgCiAgICBmaWx0ZXIodm9jID09IDApICU+JQogICAgZ3JvdXBfYnkoc3ViamVjdF9pZCwgYWdlX2dyb3VwKSAlPiUKICAgIHN1bW1hcml6ZShtZWFuU3ViQWdlbmN5ID0gbWVhbihzdGFnZV8xX2Nob2ljZSwgbmEucm0gPSBUKSkKClZvQ196ZXJvX21lYW5zIDwtIFZvQ196ZXJvX21lYW5zX3N1YiAlPiUKICB1bmdyb3VwKCkgJT4lCiAgc3VtbWFyaXplKG1lYW5BZ2VuY3kgPSBtZWFuKG1lYW5TdWJBZ2VuY3ksIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgc2VBZ2VuY3kgPSBzZChtZWFuU3ViQWdlbmN5IC8gc3FydChuKCkpKSkKVm9DX3plcm9fbWVhbnMKYGBgCgoKCiMgQWdlbmN5IHRhc2s6IE1hY2hpbmUgc2VsZWN0aW9uCiMjIE1vZGVsOiBPcHRpbWFsIG1hY2hpbmUgY2hvaWNlcyBhY3Jvc3MgdHJpYWxzIGJ5IGNvbmRpdGlvbiBhbmQgYWdlCmBgYHtyIG1hY2hpbmUgc2VsZWN0aW9uIGRlY2lzaW9uc30KIyBzZWxlY3QgdmFyaWFibGVzIGZvciBpbmNsdXNpb24gaW4gbWl4ZWQtZWZmZWN0cyBtb2RlbCAobm8gYWdlIGZvciBub3cpCm1hY2hpbmVfbW9kZWxfZGF0YSA8LSBsZWFybmluZ19kYXRhX2ZpbHRlcmVkICU+JQogIGZpbHRlcihzdGFnZV8xX2Nob2ljZSA9PSAxKSAlPiUKICBmaWx0ZXIoY29udGV4dCA8IDIpICU+JQogIHNlbGVjdChzdWJqZWN0X2lkLCBzdGFnZV8yX2FjYywgY29udGV4dCwgY29uZGl0aW9uX3RyaWFsLCBibG9jaywgYWdlLCBhZ2VfZ3JvdXApICU+JQogIGRyb3BfbmEoKQoKIyMgUkVHUkVTU0lPTiBNT0RFTCAjIwojeiBzY29yZSBjb250aW51b3VzIHZhcmlhYmxlcwptYWNoaW5lX21vZGVsX2RhdGEkc3ViamVjdF9pZCA8LSBmYWN0b3IobWFjaGluZV9tb2RlbF9kYXRhJHN1YmplY3RfaWQpCm1hY2hpbmVfbW9kZWxfZGF0YSRjb250ZXh0IDwtIGZhY3RvcihtYWNoaW5lX21vZGVsX2RhdGEkY29udGV4dCkKbWFjaGluZV9tb2RlbF9kYXRhJGNvbmRpdGlvbl90cmlhbCA8LSBzY2FsZV90aGlzKG1hY2hpbmVfbW9kZWxfZGF0YSRjb25kaXRpb25fdHJpYWwpCm1hY2hpbmVfbW9kZWxfZGF0YSRhZ2VfeiA8LSBzY2FsZV90aGlzKG1hY2hpbmVfbW9kZWxfZGF0YSRhZ2UpCgojcnVuIG1vZGVsCm1hY2hpbmVfbW9kZWwgPC0gbWl4ZWQoc3RhZ2VfMl9hY2MgfiBhZ2VfeiAqIGNvbnRleHQgKiBjb25kaXRpb25fdHJpYWwgKyAoY29udGV4dCAqIGNvbmRpdGlvbl90cmlhbCB8fCBzdWJqZWN0X2lkKSwKICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBtYWNoaW5lX21vZGVsX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiLAogICAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gIkxSVCIsCiAgICAgICAgICAgICAgICAgICAgICBleHBhbmRfcmUgPSBULAogICAgICAgICAgICAgICAgICAgICAgY29udHJvbD1nbG1lckNvbnRyb2wob3B0aW1pemVyPSJib2J5cWEiLCBvcHRDdHJsPWxpc3QobWF4ZnVuPTFlNikpKQoKI3Nob3cgbW9kZWwgcmVzdWx0cwptYWNoaW5lX21vZGVsCnN1bW1hcnkobWFjaGluZV9tb2RlbCkKYGBgCgojIyBQbG90OiBQcm9wb3J0aW9uIG9wdGltYWwgbWFjaGluZSBzZWxlY3Rpb25zIGFjcm9zcyBhZ2UgZ3JvdXBzIGFuZCB0cmlhbHMKYGBge3IgcGxvdCBiYW5kaXQgY2hvaWNlcyBhY3Jvc3MgdHJpYWxzLCB3aWR0aCA9IDcsIGhlaWdodCA9IDQsIHVuaXQgPSAiaW4ifQoKIyMgUExPVCAjIwptYWNoaW5lX3NlbGVjdGlvbl9zdWJfbWVhbnMgPC0gbWFjaGluZV9tb2RlbF9kYXRhICU+JQogIGdyb3VwX2J5KGNvbnRleHQsIGJsb2NrLCBzdWJqZWN0X2lkLCBhZ2VfZ3JvdXApICU+JSAKICBzdW1tYXJpemUoc3ViX2FjYyA9IG1lYW4oc3RhZ2VfMl9hY2MsIG5hLnJtID0gVCkpCgptYWNoaW5lX3NlbGVjdGlvbl9tZWFucyA8LSBtYWNoaW5lX3NlbGVjdGlvbl9zdWJfbWVhbnMgJT4lCiAgZ3JvdXBfYnkoY29udGV4dCwgYmxvY2ssIGFnZV9ncm91cCkgJT4lIAogIHN1bW1hcml6ZShtZWFuX2FjYyA9IG1lYW4oc3ViX2FjYyksCiAgICAgICAgICAgIHNlID0gc2Qoc3ViX2FjYykvc3FydChuKCkpKQoKbWFjaGluZV9zZWxlY3Rpb25fcGxvdCA8LSBnZ3Bsb3QobWFjaGluZV9zZWxlY3Rpb25fbWVhbnMsIGFlcyh4PWJsb2NrLCB5PW1lYW5fYWNjLCBjb2xvcj1mYWN0b3IoY29udGV4dCkpKSArCiAgZmFjZXRfd3JhcCh+YWdlX2dyb3VwKSArCiAgZ2VvbV9wb2ludChzaXplID0gMykgKwogIGdlb21faml0dGVyKGRhdGEgPSBtYWNoaW5lX3NlbGVjdGlvbl9zdWJfbWVhbnMsICBhZXMoeD1ibG9jaywgeT1zdWJfYWNjLCBjb2xvcj1mYWN0b3IoY29udGV4dCkpLCBzaXplID0gLjUpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhZXMoZmlsbCA9IGZhY3Rvcihjb250ZXh0KSkpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAuNSwgbGluZXR5cGU9ImRhc2hlZCIpICsKICB5bGFiKCJQcm9wb3J0aW9uIE9wdGltYWwgTWFjaGluZSBTZWxlY3Rpb25zIikgKwogIHhsYWIoIkJsb2NrIikgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBjKDQsIDgsIDEyKSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKG5hbWU9IkNvbnRleHQiLAogICAgICAgICAgICAgICAgICAgIGxhYmVscz1jKCI5MC8xMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjcwLzMwIiksCiAgICAgICAgICAgICAgICAgICAgdmFsdWVzPWMoY29sb3IxLCBjb2xvcjMpLCAKICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2xlZ2VuZChyZXZlcnNlPVRSVUUpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKG5hbWU9IkNvbnRleHQiLAogICAgICAgICAgICAgICAgICAgICBsYWJlbHM9YygiOTAvMTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNzAvMzAiKSwKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPWMoY29sb3IxLCBjb2xvcjMpLAogICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2xlZ2VuZChyZXZlcnNlPVRSVUUpKSArCiAgdm9jX3RoZW1lKCkgKwogIHRoZW1lKHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZT0xMikpCm1hY2hpbmVfc2VsZWN0aW9uX3Bsb3QKYGBgCgoKCiMgRXhwbGljaXQgcmV3YXJkIGtub3dsZWRnZSB0YXNrIAojIyBFeHBsaWNpdCByZXdhcmQga25vd2xlZGdlIHRhc2s6IHN1bW1hcnkgc3RhdHMKYGBge3IgZXhwbGljaXQga25vd2xlZGdlIHRhc2t9CgojIFJlYWQgaW4gZGF0YQpleHBsaWNpdEtub3cgPC0gcmVhZF9jc3YoJ2RhdGEvcHJvY2Vzc2VkL2V4cGxpY2l0X2RhdGEuY3N2JykgCiNleHBsaWNpdEtub3ckc3ViamVjdF9pZCA8LSBmYWN0b3IoZXhwbGljaXRLbm93JHN1YmplY3RfaWQpCgojY29tYmluZSB3aXRoIGFnZQpleHBsaWNpdEtub3cgPC0gZnVsbF9qb2luKGV4cGxpY2l0S25vdywgcGFydGljaXBhbnRfYWdlcywgYnkgPSBjKCJzdWJqZWN0X2lkIikpCgpleHBsaWNpdEtub3cgJT4lIAogIGdyb3VwX2J5KHN1YmplY3RfaWQsIGFnZSkgJT4lIAogIHN1bW1hcml6ZShtID0gbWVhbihlcnJvcikpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIHN1bW1hcml6ZShtZWFuRXJyID0gbWVhbihtLCBuYS5ybT1UKSwgc2QgPSBzZChtLCBuYS5ybSA9IFQpKQpgYGAKCiMjIE1vZGVsOiBFeHBsaWNpdCByZXdhcmQga25vd2xlZGdlIGJ5IGFnZSBhbmQgdHJ1ZSBwcm9iYWJpbGl0aWVzCmBgYHtyIGV4cGxpY2l0IGtub3dsZWRnZSBtb2RlbH0KCiNyZS1zY2FsZSBhZ2UgYW5kIHpUcnVlUHJvYgpleHBsaWNpdEtub3cuZmlsdGVyZWQgPC0gZXhwbGljaXRLbm93ICU+JQogICAgc2VsZWN0KHN1YmplY3RfaWQsIGFnZSwgdHJ1ZV9wcm9iLCBlcnJvcikgJT4lCiAgICBkcm9wX25hKCkKCmV4cGxpY2l0S25vdy5maWx0ZXJlZCR6QWdlIDwtIHNjYWxlKGV4cGxpY2l0S25vdy5maWx0ZXJlZCRhZ2UpCmV4cGxpY2l0S25vdy5maWx0ZXJlZCR6VHJ1ZVByb2IgPC0gc2NhbGUoZXhwbGljaXRLbm93LmZpbHRlcmVkJHRydWVfcHJvYikKCiMgcnVuIG1vZGVsCmV4cGxpY2l0S25vd19lcnJvcmJ5VHJ1ZVByb2JBZ2UubWl4ZWQgPC0gbWl4ZWQoZXJyb3IgfiB6VHJ1ZVByb2IqekFnZSArICgxfHN1YmplY3RfaWQpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZXhwbGljaXRLbm93LmZpbHRlcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJTIikgCmV4cGxpY2l0S25vd19lcnJvcmJ5VHJ1ZVByb2JBZ2UubWl4ZWQKc3VtbWFyeShleHBsaWNpdEtub3dfZXJyb3JieVRydWVQcm9iQWdlLm1peGVkKQpgYGAKCiMjIFBsb3Q6IEV4cGxpY2l0IHJld2FyZCBrbm93bGVkZ2UKYGBge3IgcGxvdCBleHBsaWNpdCBrbm93bGVkZ2V9CgpleHBsaWNpdEtub3cgPC0gZXhwbGljaXRLbm93ICU+JQogIG11dGF0ZShhZ2VfZ3JvdXAgPSBjYXNlX3doZW4oYWdlIDwgMTMgfiAnQ2hpbGRyZW4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlIDwgMTggJiBhZ2UgPiAxMi45OSB+ICdBZG9sZXNjZW50cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2UgPiAxOCB+ICdBZHVsdHMnKSkKCmV4cGxpY2l0S25vdyRhZ2VfZ3JvdXAgPC0gZmFjdG9yKGV4cGxpY2l0S25vdyRhZ2VfZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJDaGlsZHJlbiIsICJBZG9sZXNjZW50cyIsICJBZHVsdHMiKSkKCiMgcGxvdCByZXNwb25zZSBieSBiYW5kaXQKZXhwbGljaXRLbm93ICU+JSBkcm9wX25hKCkgJT4lCiAgICBnZ3Bsb3QoLiwgYWVzKHg9ZmFjdG9yKHRydWVfcHJvYiksIHk9cmVzcG9uc2UsIGZpbGw9YWdlX2dyb3VwKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYyhjb2xvcjEsIGNvbG9yMiwgY29sb3IzKSwgbmFtZSA9ICJBZ2UgR3JvdXAiKSArCiAgICB5bGFiKCJSZXBvcnRlZCBSZXdhcmQgUHJvYmFiaWxpdHkiKSArCiAgICB4bGFiKCJUcnVlIFJld2FyZCBQcm9iYWJpbGl0eSIpICsKICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiMTAlIiwgIjMwJSIsICI1MCUiLCAiNzAlIiwgIjkwJSIpKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gYygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCksIAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCIxMCUiLCAiMjAlIiwgIjMwJSIsICI0MCUiLCAiNTAlIiwgIjYwJSIsICI3MCUiLCAiODAlIiwgIjkwJSIsICIxMDAlIikpICsKICAgIHZvY190aGVtZSgpCmBgYAo=